#include "KeywordsRepository.h"

using namespace basededatos;

KeywordsRepository::KeywordsRepository(void)
{
	this->manejadorDeArchivos = new ManejadorDeArchivos();
};

list<string> KeywordsRepository::ObtenerKeywordsPrescindibilidad()
{
	fstream archivo = this->manejadorDeArchivos->Abrir(KEYWORDS_PRESCINDIBILIDAD_PATH);
	return this->ObtenerKeywords(archivo);
};

list<string> KeywordsRepository::ObtenerKeywordsImprescindibilidad()
{
	fstream archivo = this->manejadorDeArchivos->Abrir(KEYWORDS_IMPRESCINDIBILIDAD_PATH);
	return this->ObtenerKeywords(archivo);
};

list<string> KeywordsRepository::ObtenerKeywordsChequeoAsistencia()
{
	fstream archivo = this->manejadorDeArchivos->Abrir(KEYWORDS_CHEQUEO_ASISTENCIA_PATH);
	return this->ObtenerKeywords(archivo);
};

list<string> KeywordsRepository::ObtenerKeywordsNoChequeoAsistencia()
{
	fstream archivo = this->manejadorDeArchivos->Abrir(KEYWORDS_NO_CHEQUEO_ASISTENCIA_PATH);
	return this->ObtenerKeywords(archivo);
};

list<string> KeywordsRepository::ObtenerKeywordsMateriaDificultosa()
{
	fstream archivo = this->manejadorDeArchivos->Abrir(KEYWORDS_MATERIA_DIFICULTOSA_PATH);
	return this->ObtenerKeywords(archivo);
};

list<string> KeywordsRepository::ObtenerKeywordsMateriaAccesible()
{
	fstream archivo = this->manejadorDeArchivos->Abrir(KEYWORDS_MATERIA_ACCESIBLE_PATH);
	return this->ObtenerKeywords(archivo);
};

list<string> KeywordsRepository::ObtenerKeywords(fstream& archivo)
{
	list<string> keywords;
	while(!archivo.eof())
	{
		string linea;
		getline(archivo, linea, '\n');
		size_t pos = 0;
		while(linea.substr(pos).find(SEPARADOR_KEYWORD) != string::npos)
		{
			keywords.push_back(linea.substr(pos, linea.substr(pos).find(SEPARADOR_KEYWORD))); 
			pos += linea.substr(pos).find(SEPARADOR_KEYWORD) + 1; 
		}
		keywords.push_back(linea.substr(pos));
	}
	return keywords;
};